#include "ModalidadConfiguracion.h"

ModalidadConfiguracion::ModalidadConfiguracion() : GameConfiguration()
{

}

ModalidadConfiguracion::~ModalidadConfiguracion()
{

}

void ModalidadConfiguracion::save()
{

}
void ModalidadConfiguracion::update( QByteArray )
{

}

void ModalidadConfiguracion::deserialize( QByteArray data )
{
	char * buffer = (char*) malloc( data.size() + 1 );
	memset( buffer , '\0' , data.size() + 1 );

	for( int i = 0 ; i < data.size() ; i++ )
		buffer[i] = data.at(i);

	BMMemoryUtils memoUtils;
	int contadorDatos = 0;

	// Codigo de modalidad 0X31 , 0x32 , 0x33 
	memoUtils.MemoryCopy( &m_Codigo , buffer , sizeof(m_Codigo) );
	contadorDatos += sizeof(m_Codigo);

	// descripcion
	char descripcionAux[ SIZE_DESCRIP_MODALIDAD + 1 ];
	memset( descripcionAux , '\0' , SIZE_DESCRIP_MODALIDAD + 1 );
	memoUtils.MemoryCopy( descripcionAux , buffer + contadorDatos , SIZE_DESCRIP_MODALIDAD , BIG_ENDIAN );
	contadorDatos += SIZE_DESCRIP_MODALIDAD;
	m_Descripcion = descripcionAux ;

	// Importe
	memoUtils.MemoryCopy( &m_Importe , buffer + contadorDatos , sizeof(m_Importe) );
	contadorDatos += sizeof(m_Importe);

	// Cantidad de lineas adicionales
	memoUtils.MemoryCopy( &m_CantLineasAdd , buffer + contadorDatos , sizeof(m_CantLineasAdd));
	contadorDatos += sizeof(m_CantLineasAdd);

	// Lineas adicionales
	for( int j = 0 ; j < m_CantLineasAdd ; j++ )
	{
		char lineaAdicional[ FIXED_SIZE_LINEA_ADD + 1];
		memset( lineaAdicional , '\0' , FIXED_SIZE_LINEA_ADD );

		memoUtils.MemoryCopy( &lineaAdicional , buffer + contadorDatos , FIXED_SIZE_LINEA_ADD , BIG_ENDIAN);
		contadorDatos += FIXED_SIZE_LINEA_ADD;

		m_LineasAdd.append( QString( lineaAdicional ) );
	}

	//Calculo de datos de Modalidad
	m_contadorModalidad=0;
	m_contadorModalidad=contadorDatos;

	free(buffer);
}